#include <iostream>
#include "point.h"
#include "face.h"
#include "sommet.h"
#include "fenetreopengl.h"
#include <QList>
#include <QApplication>
#include <QVBoxLayout>
#include <QLCDNumber>
#include <QSlider>
#include "gestionnaireimages.h"



//On utilise l'espace de nom std::ostream
using std::ostream;


Scene* scene;


/*
 * Classse permettant de tester une fenetre opengl
 *
 */
class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = 0);
};
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    FenetreOpengl *window = new FenetreOpengl(60, this, "Fenetre opengl");

    window->setScene(*scene);


    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(window, 1);

    setLayout(layout);
    window->setFocus();
}

//On initialise une scene
void initialiserScene()
{
    Sommet* s1 = new Sommet(-1.0, -1.0, -1.0, 0.0, 0.0);
    Sommet* s2 = new Sommet(1.0, -1.0, -1.0, 0.0, 0.0);
    Sommet* s3 = new Sommet(1.0, 1.0, -1.0, 0.0, 0.0);
    Sommet* s4 = new Sommet(-1.0, 1.0, -1.0, 0.0, 0.0);
    Sommet* s5 = new Sommet(-1.0, -1.0, 1.0, 0.0, 0.0);
    Sommet* s6 = new Sommet(1.0, -1.0, 1.0, 0.0, 0.0);
    Sommet* s7 = new Sommet(1.0, 1.0, 1.0, 0.0, 0.0);
    Sommet* s8 = new Sommet(-1.0, 1.0, 1.0, 0.0, 0.0);


    //Face de devant
    Face* face1 = new Face();
    face1->ajouterSommet(*s1);
    face1->ajouterSommet(*s2);
    face1->ajouterSommet(*s3);
    face1->ajouterSommet(*s4);

    //Face de droite
    Face* face2 = new Face();
    face2->ajouterSommet(*s3);
    face2->ajouterSommet(*s2);
    face2->ajouterSommet(*s6);
    face2->ajouterSommet(*s7);

    //Face de derriere
    Face* face3 = new Face();
    face3->ajouterSommet(*s7);
    face3->ajouterSommet(*s6);
    face3->ajouterSommet(*s5);
    face3->ajouterSommet(*s4);

    //Face de gauche
    Face* face4 = new Face();
    face4->ajouterSommet(*s1);
    face4->ajouterSommet(*s4);
    face4->ajouterSommet(*s8);
    face4->ajouterSommet(*s5);

    //Face de dessus
    Face* face5 =new Face();
    face5->ajouterSommet(*s4);
    face5->ajouterSommet(*s3);
    face5->ajouterSommet(*s7);
    face5->ajouterSommet(*s8);

    //Face de dessous
    Face* face6 = new Face();
    face6->ajouterSommet(*s1);
    face6->ajouterSommet(*s5);
    face6->ajouterSommet(*s6);
    face6->ajouterSommet(*s2);

    QList<Face*> faces;
    faces.push_back(face1);
    faces.push_back(face2);
    faces.push_back(face3);
    faces.push_back(face4);
    faces.push_back(face5);
    faces.push_back(face6);

    ObjetScene* objetScene = new ObjetScene(faces);
    QList<ObjetScene*> listeObjets;
    listeObjets.push_back(objetScene);

    scene = new Scene(listeObjets);
}

//Fonction principale
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QList<QString> liste = GestionnaireImages::getListeImages();

    //initialiserScene();

    //MyWidget widget;
    //widget.show();

    return app.exec();
}










